#ifndef SHELL_H_
#define SHELL_H_

#include <pthread.h>
#include <string>
#include <iostream>
#include <cstdlib>
#include <string.h>
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>

#include "Process.h"
#include "libraryFunctions/LibraryFunctions.h"

using namespace std;

class Shell {

private:
	bool shouldExit;
	LibraryFunctions* libFunctions;
	map<int,Process*> prcoessesThreadsMap;
	Process* currentlyRunningProcess;

public:
	Shell(LibraryFunctions* libFunc);
	virtual ~Shell();
	void run();
	int parseString(string sStringToParse, string delimChar, vector<string>& rReturnStringArray);
	int processCommand (vector<string>& userInput);
	int swprc (int newProcessNum);
	int crprc (int id, int parent);
	int batch (const char* fileName);
};


#endif /* SHELL_H_ */
